/* -*- c -*-
   llvmir-c.h - Bridge between C and C++ code for LLVMIR
   Copyright (C) 2011 Matthew Wahab <mwb.cde@gmail.com>

   This file is part of GCC-LLVMIR.

   GCC-LLVMIR is free software; you can redistribute it and/or modify it under
   the terms of the GNU General Public License as published by the Free
   Software Foundation; either version 3, or (at your option) any later
   version.

   GCC-LLVMIR is distributed in the hope that it will be useful, but WITHOUT ANY
   WARRANTY; without even the implied warranty of MERCHANTABILITY or
   FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
   for more details.

   You should have received a copy of the GNU General Public License
   along with GCC-LLVMIR; see the file COPYING3.  If not see
   <http://www.gnu.org/licenses/>.  */

#ifndef LLVMIR_C_H
#define LLVMIR_C_H

/* All functions defined in llvmir.cc. */

/* Option initialization. */
extern void
llvmir_initialize_options(struct gcc_options* gcc_opts);

/* Process the options. This initializes the LLVMIR context and
   selects the parser to be used. */
extern void
llvmir_process_options(void);

/* Main initialization. */
extern void
llvmir_initialize(void);

/* Finalizing code */
extern void
llvmir_finalize(void);

/* Option setting */

/* Handle a -I option. */
extern bool
llvmir_option_include(const char* opt_cstr);

/* Handle a -L option. */
extern bool
llvmir_option_libdir(const char* opt_cstr);

/* Set the input language. */
extern bool
llvmir_option_lang(const char*, const int);

/* Set the front-end options. */
extern bool
llvmir_option_opt(const char*);

/* Set amount of debugging information. */
extern bool
llvmir_option_dump(const char* opt_cstr, const int value);

/* Generic debugging option. */
extern bool
llvmir_option_debug(const char* opt_cstr, const int value);

/* Parsing */
extern bool
llvmir_parse_input_files(const char**, const unsigned int, const int);

/* End of file. */
#endif /* LLVMIR_C_H */
